package com.kun.companion.core.domain.dto;

/**
 * Bean定义元数据类
 *
 * <p>用于描述容器中Bean的配置信息，包含Bean的类定义、作用域、生命周期方法等元数据。
 * 该类通常由配置解析器生成，供容器在实例化和管理Bean时使用。</p>
 *
 * @author gzc
 * @since 2025/1/27
 **/
public class BeanDefinition {
    /**
     * Bean的Class类型
     * <p>用于反射实例化对象，必须为非接口/抽象类</p>
     */
    private Class<?> beanClass;
    /**
     * Bean在容器中的唯一名称
     * <p>遵循Spring命名规范，默认使用类名首字母小写</p>
     */
    private String beanName;
    /**
     * 是否延迟初始化（懒加载）
     * <p>true: 首次访问时初始化；false: 容器启动时立即初始化</p>
     */
    private boolean isLazy = false;
    /**
     * 是否为代理对象
     * <p>true: 表示该Bean需要AOP代理增强；false: 原始对象</p>
     */
    private boolean isProxy = false;


    public Class<?> getBeanClass() {
        return beanClass;
    }

    public void setBeanClass(Class<?> beanClass) {
        this.beanClass = beanClass;
    }

    public String getBeanName() {
        return beanName;
    }

    public void setBeanName(String beanName) {
        this.beanName = beanName;
    }

    public boolean isLazy() {
        return isLazy;
    }

    public boolean isProxy() {
        return isProxy;
    }

    public void setProxy(boolean proxy) {
        isProxy = proxy;
    }

    public void setLazy(boolean lazy) {
        isLazy = lazy;
    }

}